package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.VO.operate.OperateUserManageVO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-APP用户管理资源数据访问接口。
 * <desc/>
 *
 * @createDate 2017/9/20.
 */
@Mapper
@Repository
public interface IOperateUserManageDao extends IAbstractBaseDao<OperateUserManageVO> {

     /**
      * <desc>
      *      根据用户ID获取用户详细信息。
      * <desc/>
      *
      * @param  userId  用户ID
      * @return
      * @author shengen.T
      * @createDate 2017/9/21
      */
    OperateUserManageVO getUserInfo(@Param("userId") String userId);
    
    
     /**
      * <desc>
      *     获取用户信息列表。
      * <desc/>
      *
      * @param  params
      * @return  返回用户信息列表
      * @author shengen.T
      * @createDate 2017/9/21
      */
      List<OperateUserManageVO> getUserInfoList(Map<String,Object> params);

    /**
     * <desc>
     *      获取分页总数量
     * </desc>
     *
     * @param params 查询参数
     * @return 总数量
     * @author shengen.T
     * @createDate 2017/09/21
     */
    Integer getPageCount(Map<String,Object> params);

     /**
     * <desc>
     *      设置用户使用状态。
     * <desc/>
     *
     * @param  userId 用户ID
     * @param  status 状态
     * @return
     * @author shengen.T
     * @createDate 2017/9/22
     */
    Integer setUserStatus(@Param("userId") String userId, @Param("status") Integer status);

    /**
     * <desc>
     *      根据用户查询项目。
     * <desc/>
     *
     * @param  userId 用户ID
     * @return
     * @author Qiang.S
     * @createDate 2019/04/04
     */
    List<String> getUserPorject(@Param("userId") String userId);

    /**
     * <desc>
     *      根据查询条件查询今日/本周/本月的用户活跃度
     * </desc>
     *
     * @param timeFlag,searchTIme
     * @return
     * @Author Zhu.yj
     * @createDate  2019/10/31
     */
    List<Map<String ,Object>> getActiveUser(@Param("timeFlag") String timeFlag, @Param("searchTime") String searchTime);

}
